//package com.erp.user.service.impl;
//
//import cn.hutool.core.bean.BeanUtil;
//import com.alibaba.fastjson.JSONObject;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.erp.user.domain.ErpAgentInfo;
//import com.erp.user.domain.ErpBranchOfficeInfo;
//import com.erp.user.domain.ErpUserInfo;
//import com.erp.user.domain.bo.ErpBranchOfficeInfoBo;
//import com.erp.user.domain.vo.CityVo;
//import com.erp.user.domain.vo.ErpAgentInfoVo;
//import com.erp.user.domain.vo.ErpBranchOfficeInfoVo;
//import com.erp.user.domain.vo.ErpUserInfoVo;
//import com.erp.user.mapper.ErpAgentInfoMapper;
//import com.erp.user.mapper.ErpBranchOfficeInfoMapper;
//import com.erp.user.mapper.ErpUserInfoMapper;
//import com.erp.user.service.ICityService;
//import com.erp.user.service.IErpBranchOfficeInfoService;
//import com.ruoyi.common.core.domain.PageQuery;
//import com.ruoyi.common.core.domain.R;
//import com.ruoyi.common.core.utils.oldUtils.StringUtils;
//import com.ruoyi.common.core.web.oldPage.TableDataInfo;
//import com.ruoyi.common.security.utils.SecurityUtils;
//import com.ruoyi.system.api.RemoteUserService;
//import com.ruoyi.system.api.domain.SysUser;
//import com.ruoyi.system.api.model.LoginUser;
//import lombok.RequiredArgsConstructor;
//import org.springframework.stereotype.Service;
//
//import java.util.*;
//import java.util.stream.Collectors;
//
///**
// * 分公司开户信息Service业务层处理
// *
// * @author erp
// * @date 2023-05-08
// */
//@RequiredArgsConstructor
//@Service
//public class ErpBranchOfficeInfoServiceImpl implements IErpBranchOfficeInfoService {
//
//	private final ErpBranchOfficeInfoMapper baseMapper;
//	private final RemoteUserService userService;
//	private final ICityService cityService;
//	private final ErpAgentInfoMapper agentInfoMapper;
//	private final ErpUserInfoMapper userInfoMapper;
//
//	/**
//	 * 查询分公司开户信息
//	 */
//	@Override
//	public ErpBranchOfficeInfoVo queryById(Long id) {
//		ErpBranchOfficeInfoVo vo = baseMapper.selectVoById(id);
//		Long userId = vo.getUserId();
//		R<Object> objectR = userService.selectUserById(userId);
//        String toJSONString = JSONObject.toJSONString(objectR.getData());
//        SysUser sysUser = JSONObject.parseObject(toJSONString, SysUser.class);
//		if (sysUser != null) {
//			vo.setEmail(sysUser.getEmail());
//			vo.setPhonenumber(sysUser.getPhonenumber());
//			vo.setUserName(sysUser.getUserName());
//		}
//		return vo;
//	}
//
//    /**
//     * 查询分公司开户信息列表
//     */
//    @Override
//    public TableDataInfo<ErpBranchOfficeInfoVo> queryPageList(ErpBranchOfficeInfoBo bo, PageQuery pageQuery) {
//		// 获取当前登录的userid
//		Long loginUserId = SecurityUtils.getUserId();
//		// 判断用户的角色和部门
////		LoginUser loginUser = SecurityUtils.getLoginUser();
////		List<RoleDTO> roles = loginUser.getRoles();
////		Set<String> roles = loginUser.getRoles();
//		LambdaQueryWrapper<ErpBranchOfficeInfo> lqw = buildQueryWrapper(bo);
////        Page<ErpBranchOfficeInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
//        Page<ErpBranchOfficeInfoVo> result = baseMapper.selectVoPageByUser(pageQuery.build(), bo);
//        List<ErpBranchOfficeInfoVo> records = result.getRecords();
//        records.forEach(vo -> {
//            Long userId = vo.getUserId();
//            String manageCity = vo.getManageCity();
//            String cityName = "";
//            // 获取经营城市
//            if (manageCity != null) {
//                String replaceAll = manageCity.replaceAll("\\[", "").replaceAll("]", "");
//                List<String> collect = Arrays.stream(replaceAll.split(",")).collect(Collectors.toList());
//                for (int i = 0; i < collect.size(); i++) {
//                    if ((i+1) % 2 == 0) {
//                        String s = collect.get(i);
//                        Integer cityId = Integer.parseInt(s);
//                        CityVo cityVo = cityService.queryById(cityId);
//                        cityName = cityName + "," + cityVo.getCity();
//                    }
//                }
//            }
//            vo.setManageCity(cityName.replaceFirst(",", ""));
//            // 获取直推分公司名
//            String parentId = vo.getParentId();
//            if (parentId != null) {
//                Long branchId = Long.parseLong(parentId);
//				ErpBranchOfficeInfo branchOfficeInfo = baseMapper.selectById(branchId);
//				if (branchOfficeInfo != null) {
//					String corporateName = branchOfficeInfo.getCorporateName();
//					vo.setParentId(corporateName); // 直推的分公司名
//				}else {
//					vo.setParentId(null);
//				}
//            }
//			R<Object> objectR = userService.selectUserById(userId);
//            String toJSONString = JSONObject.toJSONString(objectR.getData());
//            SysUser sysUser = JSONObject.parseObject(toJSONString, SysUser.class);
//			if (sysUser != null) {
//				vo.setEmail(sysUser.getEmail());
//				vo.setPhonenumber(sysUser.getPhonenumber());
//				vo.setUserName(sysUser.getUserName());
//			}
//        });
//        result.setRecords(records);
//        return TableDataInfo.build(result);
//    }
//
//	/**
//	 * 查询分公司开户信息列表
//	 */
//	@Override
//	public List<ErpBranchOfficeInfoVo> queryList(ErpBranchOfficeInfoBo bo) {
//		LambdaQueryWrapper<ErpBranchOfficeInfo> lqw = buildQueryWrapper(bo);
//		return baseMapper.selectVoList(lqw);
//	}
//
//	private LambdaQueryWrapper<ErpBranchOfficeInfo> buildQueryWrapper(ErpBranchOfficeInfoBo bo) {
//		Map<String, Object> params = bo.getParams();
//		LambdaQueryWrapper<ErpBranchOfficeInfo> lqw = Wrappers.lambdaQuery();
//		lqw.eq(bo.getUserId() != null, ErpBranchOfficeInfo::getUserId, bo.getUserId());
//		lqw.eq(StringUtils.isNotBlank(bo.getCode()), ErpBranchOfficeInfo::getCode, bo.getCode());
//		lqw.eq(StringUtils.isNotBlank(bo.getLegalPerson()), ErpBranchOfficeInfo::getLegalPerson, bo.getLegalPerson());
//		lqw.like(StringUtils.isNotBlank(bo.getCorporateName()), ErpBranchOfficeInfo::getCorporateName,
//				bo.getCorporateName());
//		lqw.eq(StringUtils.isNotBlank(bo.getCreditCode()), ErpBranchOfficeInfo::getCreditCode, bo.getCreditCode());
//		lqw.eq(StringUtils.isNotBlank(bo.getBusinessLicense()), ErpBranchOfficeInfo::getBusinessLicense,
//				bo.getBusinessLicense());
//		lqw.eq(StringUtils.isNotBlank(bo.getLegalIdCard()), ErpBranchOfficeInfo::getLegalIdCard, bo.getLegalIdCard());
//		lqw.eq(StringUtils.isNotBlank(bo.getManageCity()), ErpBranchOfficeInfo::getManageCity, bo.getManageCity());
//		lqw.eq(StringUtils.isNotBlank(bo.getContract()), ErpBranchOfficeInfo::getContract, bo.getContract());
//		lqw.eq(StringUtils.isNotBlank(bo.getCertificate()), ErpBranchOfficeInfo::getCertificate, bo.getCertificate());
//		lqw.eq(StringUtils.isNotBlank(bo.getParentId()), ErpBranchOfficeInfo::getParentId, bo.getParentId());
//		lqw.eq(StringUtils.isNotBlank(bo.getParentIds()), ErpBranchOfficeInfo::getParentIds, bo.getParentIds());
//		lqw.eq(StringUtils.isNotBlank(bo.getRevision()), ErpBranchOfficeInfo::getRevision, bo.getRevision());
//		return lqw;
//	}
//
//	/**
//	 * 新增分公司开户信息
//	 */
//	@Override
//	public Boolean insertByBo(ErpBranchOfficeInfoBo bo) {
//		ErpBranchOfficeInfo add = BeanUtil.toBean(bo, ErpBranchOfficeInfo.class);
//		validEntityBeforeSave(add);
//		boolean flag = baseMapper.insert(add) > 0;
//		if (flag) {
//			bo.setId(add.getId());
//		}
//		return flag;
//	}
//
//	/**
//	 * 修改分公司开户信息
//	 */
//	@Override
//	public Boolean updateByBo(ErpBranchOfficeInfoBo bo) {
//		ErpBranchOfficeInfo update = BeanUtil.toBean(bo, ErpBranchOfficeInfo.class);
//		validEntityBeforeSave(update);
//		return baseMapper.updateById(update) > 0;
//	}
//
//	/**
//	 * 保存前的数据校验
//	 */
//	private void validEntityBeforeSave(ErpBranchOfficeInfo entity) {
//		// TODO 做一些数据校验,如唯一约束
//	}
//
//	/**
//	 * 批量删除分公司开户信息
//	 */
//	@Override
//	public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
//		if (isValid) {
//			// TODO 做一些业务上的校验,判断是否需要校验
//		}
//
//		return true;
//	}
//
//	@Override
//	public List<ErpBranchOfficeInfoVo> queryPageBranchAndAgent() {
//		List<ErpBranchOfficeInfoVo> branchOfficeInfos = baseMapper.selectVoList(null);
//		branchOfficeInfos.forEach(vo -> {
//			Long id = vo.getId();
//			List<ErpAgentInfoVo> agentInfos = agentInfoMapper
//					.selectVoList(new LambdaQueryWrapper<ErpAgentInfo>().eq(ErpAgentInfo::getBranchId, id));
//			vo.setChildren(agentInfos);
//		});
//		return branchOfficeInfos;
//	}
//
//	@Override
//	public List<ErpBranchOfficeInfoVo> queryPageBranchAndAgentUser() {
//		List<ErpBranchOfficeInfoVo> branchOfficeInfos = baseMapper.selectVoList(null);
//		branchOfficeInfos.forEach(vo -> {
//			Long branchId = vo.getId();
//			List<ErpAgentInfoVo> agentInfos = agentInfoMapper
//					.selectVoList(new LambdaQueryWrapper<ErpAgentInfo>().eq(ErpAgentInfo::getBranchId, branchId));
//			if (agentInfos.size() != 0) {
//				for (ErpAgentInfoVo agentInfo : agentInfos) {
//					Long agentId = agentInfo.getId();
//					List<ErpUserInfoVo> infoVos = userInfoMapper
//							.selectVoList(new LambdaQueryWrapper<ErpUserInfo>().eq(ErpUserInfo::getAgentId, agentId));
//					agentInfo.setChildren(infoVos);
//				}
//			}
//			vo.setChildren(agentInfos);
//		});
//		return branchOfficeInfos;
//	}
//
//	@Override
//	public ErpBranchOfficeInfo selectByCode(String code) {
//		ErpBranchOfficeInfo info = baseMapper
//				.selectOne(new LambdaQueryWrapper<ErpBranchOfficeInfo>().eq(ErpBranchOfficeInfo::getCode, code));
//		return info;
//	}
//
//	@Override
//	public ErpBranchOfficeInfo selectById(Long id) {
//		ErpBranchOfficeInfo info = baseMapper.selectById(id);
//		return info;
//	}
//
//	@Override
//	public List<ErpBranchOfficeInfo> selectOfficeLimit(ErpBranchOfficeInfo info) {
//		return baseMapper.selectOfficeLimit(info);
//	}
//}
